/**
 * Copyright &copy; 2012-2014 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 */
package com.thinkgem.jeesite.modules.ec.service;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.thinkgem.jeesite.common.persistence.Page;
import com.thinkgem.jeesite.common.service.CrudService;
import com.thinkgem.jeesite.common.utils.StringUtils;
import com.thinkgem.jeesite.modules.ec.entity.ItemSpec;
import com.thinkgem.jeesite.modules.ec.dao.ItemSpecDao;
import com.thinkgem.jeesite.modules.ec.entity.ItemSpecValue;
import com.thinkgem.jeesite.modules.ec.dao.ItemSpecValueDao;

/**
 * 规格管理Service
 * @author zkool
 * @version 2016-03-05
 */
@Service
@Transactional(readOnly = true)
public class ItemSpecService extends CrudService<ItemSpecDao, ItemSpec> {

	@Autowired
	private ItemSpecValueDao itemSpecValueDao;
	
	public ItemSpec get(String id) {
		ItemSpec itemSpec = super.get(id);
		itemSpec.setItemSpecValueList(itemSpecValueDao.findList(new ItemSpecValue(itemSpec)));
		return itemSpec;
	}
	
	public List<ItemSpec> findList(ItemSpec itemSpec) {
		return super.findList(itemSpec);
	}
	
	public Page<ItemSpec> findPage(Page<ItemSpec> page, ItemSpec itemSpec) {
		return super.findPage(page, itemSpec);
	}
	
	@Transactional(readOnly = false)
	public void save(ItemSpec itemSpec) {
		super.save(itemSpec);
		for (ItemSpecValue itemSpecValue : itemSpec.getItemSpecValueList()){
			if (itemSpecValue.getId() == null){
				continue;
			}
			if (ItemSpecValue.DEL_FLAG_NORMAL.equals(itemSpecValue.getDelFlag())){
				if (StringUtils.isBlank(itemSpecValue.getId())){
					itemSpecValue.setItemSpec(itemSpec);
					itemSpecValue.preInsert();
					itemSpecValueDao.insert(itemSpecValue);
				}else{
					itemSpecValue.preUpdate();
					itemSpecValueDao.update(itemSpecValue);
				}
			}else{
				itemSpecValueDao.delete(itemSpecValue);
			}
		}
	}
	
	@Transactional(readOnly = false)
	public void delete(ItemSpec itemSpec) {
		super.delete(itemSpec);
		itemSpecValueDao.delete(new ItemSpecValue(itemSpec));
	}
	
}